#ifndef WIFI_BOARD_H
#define WIFI_BOARD_H

#include "board.h"

/**
 * @brief WiFi开发板基类
 * 
 * 提供WiFi连接和网络功能的开发板基类，继承自Board类
 */
class WifiBoard : public Board {
protected:
    /** WiFi配网模式标志 */
    bool wifi_config_mode_ = false;

    /** 构造函数 */
    WifiBoard();
    
    /**
     * @brief 进入WiFi配网模式
     * 
     * 使设备进入WiFi配网状态，允许用户配置WiFi连接
     */
    void EnterWifiConfigMode();
    
    /**
     * @brief 获取开发板JSON配置
     * 
     * @return std::string 包含开发板配置的JSON字符串
     */
    virtual std::string GetBoardJson() override;

public:
    /**
     * @brief 获取开发板类型
     * 
     * @return std::string 开发板类型标识符
     */
    virtual std::string GetBoardType() override;
    
    /**
     * @brief 启动网络连接
     * 
     * 初始化并启动WiFi网络连接
     */
    virtual void StartNetwork() override;
    
    /**
     * @brief 创建HTTP客户端实例
     * 
     * @return Http* HTTP客户端对象指针
     */
    virtual Http* CreateHttp() override;
    
    /**
     * @brief 创建WebSocket客户端实例
     * 
     * @return WebSocket* WebSocket客户端对象指针
     */
    virtual WebSocket* CreateWebSocket() override;
    
    /**
     * @brief 创建MQTT客户端实例
     * 
     * @return Mqtt* MQTT客户端对象指针
     */
    virtual Mqtt* CreateMqtt() override;
    
    /**
     * @brief 创建UDP客户端实例
     * 
     * @return Udp* UDP客户端对象指针
     */
    virtual Udp* CreateUdp() override;
    
    /**
     * @brief 获取网络状态图标
     * 
     * @return const char* 表示当前网络状态的图标字符串
     */
    virtual const char* GetNetworkStateIcon() override;
    
    /**
     * @brief 设置电源节能模式
     * 
     * @param enabled true启用节能模式，false禁用节能模式
     */
    virtual void SetPowerSaveMode(bool enabled) override;
    
    /**
     * @brief 重置WiFi配置
     * 
     * 清除保存的WiFi连接信息
     */
    virtual void ResetWifiConfiguration();
};

#endif // WIFI_BOARD_H
